home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / guild_ftp.nasl < prev    next >
Text File  |  2005-01-14  |  4KB  |  137 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6.  
  7. if(description)
  8. {
  9.  script_id(10471);
  10.  script_bugtraq_id(1452);
  11.  script_version ("$Revision: 1.15 $");
  12.  script_cve_id("CVE-2000-0640");
  13.  
  14.  name["english"] = "Guild FTPd tells if a given file exists";
  15.  name["francais"] = "Guild FTPd indique si un fichier existe";
  16.  
  17.  script_name(english:name["english"], francais:name["francais"]);
  18.  
  19.  desc["english"] = "
  20. The remote FTP server can be used to determine if a given
  21. file exists on the remote host or not, by adding dot-dot-slashes
  22. in front of them. 
  23.  
  24. For instance, it is possible to determine the presence
  25. of \autoexec.bat by requesting ../../../../autoexec.bat
  26.  
  27. An attacker may use this flaw to gain more knowledge about
  28. this host, such as its file layout. This flaw is specially
  29. useful when used with other vulnerabilities.
  30.  
  31. Solution : Contact your vendor for the latest software release.
  32. Risk factor : Low";
  33.  
  34.  
  35.  
  36.  desc["francais"] = "
  37. Le serveur FTP distant peut etre utilisΘ pour determiner
  38. si un fichier donnΘ existe ou non, en ajoutant des
  39. ../ devant son nom.
  40.  
  41. Par exemple, il est possible de determiner la prΘsence
  42. de \autoexec.bat en demandant ../../../../autoexec.bat
  43.  
  44. Un pirate peut utiliser ce problΦme pour obtenir
  45. plus d'informations sur ce systΦme, comme la hiΘrarchie
  46. de fichiers mise en place. Ce problΦme est d'autant plus
  47. utile qu'il peut faciliter la mise en oeuvre de l'exploitation
  48. d'autres vulnΘrabilitΘs.
  49.  
  50. Solution : mettez votre serveur FTP α jour ou changez-en
  51. Facteur de risque : Faible";
  52.  
  53.  
  54.  script_description(english:desc["english"], francais:desc["francais"]);
  55.  
  56.  summary["english"] = "Guild FTP check";
  57.  summary["francais"] = "VΘrifie la presence de Guild FTP";
  58.  script_summary(english:summary["english"], francais:summary["francais"]);
  59.  
  60.  script_category(ACT_GATHER_INFO);
  61.  
  62.  
  63.  script_copyright(english:"This script is Copyright (C) 2000 Renaud Deraison",
  64.         francais:"Ce script est Copyright (C) 2000 Renaud Deraison");
  65.  family["english"] = "FTP";
  66.  family["francais"] = "FTP";
  67.  script_family(english:family["english"], francais:family["francais"]);
  68.  script_dependencie("find_service.nes", "ftp_anonymous.nasl");
  69.  script_require_ports("Services/ftp", 21);
  70.  exit(0);
  71. }
  72.  
  73. #
  74. # The script code starts here
  75. #
  76.  
  77. include("ftp_func.inc");
  78.  
  79. port = get_kb_item("Services/ftp");
  80. if(!port)port = 21;
  81. if(!get_port_state(port)) exit(0);
  82.  
  83.  login = get_kb_item("ftp/login");
  84.  pass  = get_kb_item("ftp/password");
  85.  
  86.  soc = open_sock_tcp(port);
  87.  if(soc)
  88.  {
  89.   if(login)
  90.   {
  91.   if(ftp_log_in(socket:soc, user:login, pass:pass))
  92.    {
  93.     pasv_port = ftp_get_pasv_port(socket:soc);
  94.     soc2 = open_sock_tcp(pasv_port, transport:get_port_transport(port));
  95.     req = string("RETR ../../../../../../nonexistent_at_all.txt\r\n");
  96.   
  97.     send(socket:soc, data:req);
  98.     r = ftp_recv_line(socket:soc);
  99.   
  100.     if("550 Access denied" >< r)
  101.     {
  102.     
  103.      close(soc2);
  104.      pasv_port = ftp_get_pasv_port(socket:soc);
  105.      soc2 = open_sock_tcp(pasv_port, transport:get_port_transport(port));
  106.      req = string("RETR ../../../../../../../../autoexec.bat\r\n");
  107.      send(socket:soc, data:req);
  108.      r =  recv_line(socket:soc, length:4096);
  109.      r2 = recv_line(socket:soc, length:4096);
  110.      r = string(r, r2);
  111.      if("425 Download failed" >< r)security_warning(port);
  112.      close(soc2);
  113.     }
  114.     ftp_close(socket: soc);
  115.     exit(0);
  116.     }
  117.    }
  118.   else
  119.     {
  120.      ftp_close(socket: soc);
  121.     }   
  122.   }
  123.   
  124.  #
  125.  # We could not log in. Then we'll just attempt to 
  126.  # grab the banner and check for version <= 0.97
  127.  #
  128. r = get_ftp_banner(port: port);
  129.   if("GuildFTPD" >< r)
  130.   {
  131.    r = strstr(r, "Version ");
  132.    if(ereg(string:r, pattern:".*Version 0\.([0-8].*|9[0-7]).*"))
  133.   {
  134.     security_warning(port);
  135.   }
  136.  }
  137.